home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / tsrhelp.zip / TSR.PAS < prev    next >
Pascal/Delphi Source File  |  1992-08-21  |  1KB  |  69 lines

  1. {$M 6000,0,0}
  2. {$R-,S-,I-,D+,F+,V-,B-,N-,L+}
  3.  
  4. Uses Dos,Crt,Graph,Screen;
  5.  
  6. Const
  7.   KeyBdInt = $09;
  8.   TimerInt = $08;
  9.   ScreenOn:Boolean = True;
  10.   Seconds = 300;
  11.   Counter:Word = 0;
  12.  
  13. Var
  14.   Regs:Registers;
  15.   OldKbdVec,OldTimerVec:Pointer;
  16.   S:ScreenStore;
  17.  
  18. Procedure STI; Inline($FB);
  19.  
  20. Procedure CLI; Inline($FA);
  21.  
  22. Procedure CallOldInt(Sub:Pointer); 
  23.   Begin
  24.     Inline($9C/$FF/$5E/$06);
  25.   End;
  26.                                                                     
  27. Procedure KeyBoard(Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:Word); Interrupt;
  28.     Begin
  29.       Counter:=0;
  30.       If Not(ScreenOn) Then
  31.         Begin
  32.           S.RestoreScreen;
  33.           ScreenOn:=True;
  34.         End;
  35.       CallOldInt(OldKbdVec);
  36.       STI;
  37.     End;
  38.       
  39. Procedure Timer(Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:Word); Interrupt;
  40.     Begin
  41.       If ScreenOn Then
  42.         Begin
  43.           Inc(Counter);
  44.           If Counter>(Trunc(18.2*Seconds)) Then
  45.             Begin
  46.               S.StoreScreen;
  47.               ClrScr;
  48.               ScreenOn:=False;
  49.             End;
  50.         End;
  51.  
  52.       CallOldInt(OldTimerVec);
  53.       STI;
  54.     End;
  55.       
  56.  
  57. Begin
  58. S.Init(1,1,32,7);
  59. GetIntVec(KeyBdInt,OldKbdVec);
  60. SetIntVec(KeyBdInt,@KeyBoard);
  61. GetIntVec(TimerInt,OldTimerVec);
  62. SetIntVec(TimerInt,@Timer);
  63. Keep(0);
  64.  
  65. End.
  66.  
  67.   
  68.   
  69.